Final Block Group ReportΒΆ

Data collected by: Maile & TQΒΆ
InΒ [59]:
from pathlib import Path
from ast import literal_eval
import pandas as pd
import seaborn.objects as so
from seaborn import axes_style
import seaborn as sns
import matplotlib.pyplot as plt
from numpy import nan
def extract(row, key):
    dct = literal_eval(row)
    value = dct[key]
    if value =='':
        value = nan
        return
    else:
        return float(value)

import folium
from folium.plugins import HeatMap
from folium.plugins import MarkerCluster

pth = Path('../data')
pth
canvas = pd.read_csv( pth / 'last_canvas.csv')
graffiti = pd.read_csv(pth / 'last_graffiti.csv')

Cleaning our dataΒΆ

Before separating our own collected data we want to ensure that we are cleaning up both datasets. To do this we chose to decide which categories we will focus on.

InΒ [60]:
canvas.isna().any(axis='rows')
Out[60]:
id                     False
created_at             False
uploaded_at            False
created_by             False
title                  False
at_canvas              False
coords                 False
date_entry_canvas      False
property_type          False
property_use           False
surveillance_status    False
surveillance           False
canvas_location        False
canvas_nature          False
surface_material       False
graffiti_removal       False
viewing_potential      False
accessibility          False
notes                   True
dtype: bool

None of the categories have null we can do the same for our graffiti data.

InΒ [61]:
graffiti.isna().any(axis='rows')
Out[61]:
id                 False
canvas_id          False
created_at         False
uploaded_at        False
created_by         False
title              False
num                False
date_recorded      False
width              False
height             False
type               False
technique          False
marker_type         True
nip_type            True
other               True
num_colors          True
colors             False
nature_graffiti    False
transcribable      False
message             True
transcription       True
dtype: bool

For the categories that have null we want to change it to "NA"

InΒ [62]:
graffiti.marker_type.fillna('none')
graffiti.nip_type.fillna('none')
graffiti.other.fillna('none')
graffiti.num_colors.fillna('none')
graffiti.message.fillna('none')
graffiti.transcription.fillna('none')
Out[62]:
0                                                    none
1                                                    none
2                                                   Caras
3                                                    none
4                                                    none
                              ...                        
3861    ?\nTUG A BOAT 9.8.7.6.5.4.3.2.10.0-1-2-3-4-5-6...
3862                                                 none
3863                                              17\n716
3864                                             17 \n716
3865                                      Kilroy was here
Name: transcription, Length: 3866, dtype: object

Separating the dataΒΆ

The name of the my data set has been set to filtered_canvas and filtered_graffiti because I have filtered out the rest of the class data. The names for the rest of the class data will be set to clsscanv and clssgraf.

InΒ [63]:
sel = graffiti.created_by == 'mailekai@uw.edu'
sel2 = graffiti.created_by == 'vutquynh@uw.edu'
grp_block = sel | sel2

filtered_graffiti = graffiti.copy().loc[grp_block, :]
filtered_graffiti


sel_1 = canvas.created_by == 'mailekai@uw.edu'
sel_2 = canvas.created_by == 'vutquynh@uw.edu'
grp_block_can = sel_1 | sel_2

filtered_canvas = canvas.copy().loc[grp_block_can, :]
filtered_canvas

clsscanv = canvas.loc[~grp_block_can, :]
clssgraf = graffiti.loc[~grp_block, :]

How do graffiti locations distribute across property types?ΒΆ

Our data compared to the class seemed to be similar. Most graffiti locations had been public areas. As for with the data we collected a difference I noticed was how we had more industrial areas than the rest of the class. I think this predominantly had to do with location because most of the buildings we had in our block was industrial. For those who had areas within downtown or westlake area probably had different property types or those that got chose a block that happened to be in a more residential area.

Analyzing our data:ΒΆ

InΒ [64]:
print(canvas.columns)
Index(['id', 'created_at', 'uploaded_at', 'created_by', 'title', 'at_canvas',
       'coords', 'date_entry_canvas', 'property_type', 'property_use',
       'surveillance_status', 'surveillance', 'canvas_location',
       'canvas_nature', 'surface_material', 'graffiti_removal',
       'viewing_potential', 'accessibility', 'notes'],
      dtype='object')
InΒ [65]:
d1 = filtered_canvas[['property_type', 'canvas_location']]

q1 = pd.crosstab(d1.property_type, d1.canvas_location)
graph = q1.plot.bar(title = 'Distribution across property types for Graffiti Locations(collected data)', ylabel= 'Count')
graph.legend(title='Canvas location')
Out[65]:
<matplotlib.legend.Legend at 0x7fb11c81d2d0>
No description has been provided for this image
InΒ [66]:
mdf = filtered_canvas.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
                            suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'canvas_location']]
mdf
Out[66]:
created_by_cv property_type canvas_location
0 mailekai@uw.edu industrial street
1 mailekai@uw.edu industrial street
2 mailekai@uw.edu industrial street
3 mailekai@uw.edu industrial street
4 mailekai@uw.edu comercial alley
... ... ... ...
139 vutquynh@uw.edu public street
140 vutquynh@uw.edu public street
141 mailekai@uw.edu public street
142 vutquynh@uw.edu public street
143 mailekai@uw.edu public street

144 rows Γ— 3 columns

InΒ [67]:
mdf.melt
Out[67]:
<bound method DataFrame.melt of        created_by_cv property_type canvas_location
0    mailekai@uw.edu    industrial          street
1    mailekai@uw.edu    industrial          street
2    mailekai@uw.edu    industrial          street
3    mailekai@uw.edu    industrial          street
4    mailekai@uw.edu     comercial           alley
..               ...           ...             ...
139  vutquynh@uw.edu        public          street
140  vutquynh@uw.edu        public          street
141  mailekai@uw.edu        public          street
142  vutquynh@uw.edu        public          street
143  mailekai@uw.edu        public          street

[144 rows x 3 columns]>
InΒ [68]:
pivoted_df = mdf.pivot_table(
    index='created_by_cv', 
    columns='canvas_location', 
    values='property_type', 
    aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
Out[68]:
created_by_cv count first
canvas_location alley bridge highway overpass railroad_tracks street alley bridge highway overpass railroad_tracks street
0 mailekai@uw.edu 3.0 4.0 1.0 1.0 45.0 17.0 comercial government public public government industrial
1 vutquynh@uw.edu None 4.0 1.0 None 59.0 9.0 None government public None industrial public

Analyzing the class dataΒΆ

InΒ [69]:
d1b = clsscanv[['property_type', 'canvas_location']]

q1b = pd.crosstab(d1b.property_type, d1b.canvas_location)
graphb = q1b.plot.bar(title = 'Distribution across property types for Graffiti Locations(class data)', xlabel = 'property types', ylabel= 'Count')
graphb.legend(title='Canvas location')
Out[69]:
<matplotlib.legend.Legend at 0x7fb11d174880>
No description has been provided for this image
InΒ [70]:
cmdf = clsscanv.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
                            suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'canvas_location']]
cmdf
Out[70]:
created_by_cv property_type canvas_location
0 stasiaa@uw.edu comercial street
1 stasiaa@uw.edu comercial street
2 stasiaa@uw.edu comercial street
3 stasiaa@uw.edu comercial street
4 stasiaa@uw.edu comercial street
... ... ... ...
2629 jazhang0@uw.edu government other
2630 jazhang0@uw.edu government street
2631 jazhang0@uw.edu government street
2632 jazhang0@uw.edu government street
2633 aleciaco@uw.edu public street

2634 rows Γ— 3 columns

InΒ [71]:
cmdf.melt
Out[71]:
<bound method DataFrame.melt of         created_by_cv property_type canvas_location
0      stasiaa@uw.edu     comercial          street
1      stasiaa@uw.edu     comercial          street
2      stasiaa@uw.edu     comercial          street
3      stasiaa@uw.edu     comercial          street
4      stasiaa@uw.edu     comercial          street
...               ...           ...             ...
2629  jazhang0@uw.edu    government           other
2630  jazhang0@uw.edu    government          street
2631  jazhang0@uw.edu    government          street
2632  jazhang0@uw.edu    government          street
2633  aleciaco@uw.edu        public          street

[2634 rows x 3 columns]>
InΒ [72]:
print(pivoted_df.columns)
MultiIndex([('created_by_cv',                ''),
            (        'count',           'alley'),
            (        'count',          'bridge'),
            (        'count',         'highway'),
            (        'count',        'overpass'),
            (        'count', 'railroad_tracks'),
            (        'count',          'street'),
            (        'first',           'alley'),
            (        'first',          'bridge'),
            (        'first',         'highway'),
            (        'first',        'overpass'),
            (        'first', 'railroad_tracks'),
            (        'first',          'street')],
           names=[None, 'canvas_location'])
InΒ [73]:
pivoted_df = cmdf.pivot_table(
    index='created_by_cv', 
    columns='canvas_location', 
    values='property_type', 
    aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
Out[73]:
created_by_cv count first
canvas_location alley bridge highway indoors other overpass railroad_tracks roof street alley bridge highway indoors other overpass railroad_tracks roof street
0 aleciaco@uw.edu None None None None None None None None 1.0 None None None None None None None None public
1 carstonp@uw.edu 40.0 None None None None None None None 40.0 public None None None None None None None government
2 clarak3@uw.edu 31.0 None None None None None 7.0 None 59.0 public None None None None None public None public
3 corrales@uw.edu None 45.0 None None None 12.0 None None 52.0 None government None None None public None None public
4 dhaman@uw.edu None None None None 42.0 None None None 35.0 None None None None comercial None None None comercial
5 dkhn@uw.edu 23.0 None None None 9.0 4.0 None None 57.0 public None None None public public None None public
6 dmoral2@uw.edu 8.0 21.0 12.0 None None None 14.0 None 25.0 industrial industrial industrial None None None industrial None comercial
7 eashelon@uw.edu 24.0 None 22.0 None 4.0 None 6.0 None 24.0 industrial None industrial None industrial None industrial None industrial
8 emali@uw.edu None None None 4.0 None None None None 81.0 None None None terrain_vague None None None None government
9 emirob@uw.edu None 20.0 None None 5.0 46.0 None None 33.0 None public None None public public None None industrial
10 gabosull@uw.edu 11.0 None 19.0 None 12.0 None None None 35.0 public None public None public None None None public
11 gjorcz@uw.edu 6.0 None None None None None None None 78.0 industrial None None None None None None None public
12 haskins7@uw.edu None 1.0 None None 6.0 None None None 69.0 None public None None industrial None None None residential
13 iwrm@uw.edu None None None None 11.0 15.0 None None 44.0 None None None None public public None None public
14 jagudino@uw.edu 1.0 None None None None None None None 12.0 residential None None None None None None None residential
15 jazhang0@uw.edu None None None None 4.0 None None None 89.0 None None None None government None None None government
16 jtp13@uw.edu None 3.0 None None 4.0 None None None 6.0 None government None None public None None None government
17 kgiuli@uw.edu 16.0 None None 8.0 32.0 None None 3.0 26.0 industrial None None public industrial None None public comercial
18 lexingra@uw.edu 2.0 None None None None None None None 70.0 comercial None None None None None None None industrial
19 lms2005@uw.edu None None None None 10.0 None None None 86.0 None None None None public None None None government
20 lspenc02@uw.edu None None None None 84.0 None None None 27.0 None None None None public None None None public
21 makaiol@uw.edu 13.0 None 45.0 None 4.0 None None None 18.0 residential None public None residential None None None public
22 maxclark@uw.edu 30.0 None None None None None None None 50.0 public None None None None None None None public
23 modulitz@uw.edu None None None None 59.0 1.0 None None 20.0 None None None None public government None None public
24 munaa3@uw.edu None None None None 15.0 None None None 5.0 None None None None government None None None government
25 nbende3@uw.edu 2.0 None None None 20.0 None None None 58.0 residential None None None other None None None government
26 niabrice@uw.edu None None None None 56.0 None None None 27.0 None None None None public None None None public
27 nicraw@uw.edu None None 23.0 None 12.0 None None None 35.0 None None government None public None None None public
28 owprenti@uw.edu 6.0 None None None None None None 1.0 83.0 comercial None None None None None None comercial comercial
29 priyad4@uw.edu 10.0 None None None 1.0 None None None 82.0 residential None None None public None None None public
30 rgould4@uw.edu 19.0 None 62.0 None None None None None 9.0 residential None public None None None None None public
31 sonil@uw.edu None None None 5.0 10.0 None None None 79.0 None None None other public None None None public
32 stasiaa@uw.edu 42.0 None None 11.0 None None None 1.0 124.0 residential None None public None None None comercial comercial

Table Importance:ΒΆ

I think it is important to view these two tables because they both show different comparisons. Within the first table we can see how different the data my block group collected was different from the class regarding the area and type of property. Something I noticed myself was my block had been more predominantly industrial whereas the class had a higher count in public property. I think this specific area is one of the more important comparisons to my block group because often graffiti is found in industrial areas or railside/train track areas.

What about across different canvas types?ΒΆ

From my group's collected data, I noticed that we collected almost all graffiti from train cars or train tracks. As for the class data, the train data is significantly lower than the rest of the canvas types. Our area has the Sound Transit that goes to Tacoma, and we also have the Amtrak that goes all the way to California. So, we saw a wide variety of graffiti and even pieces from artists outside Seattle. In the class data, almost everyones data was from a sign or wall. Which I found interesting because in our location there was not much graffiti on the signs.

InΒ [74]:
d2 = filtered_canvas[['canvas_nature', 'canvas_location']]

q2 = pd.crosstab(d2.canvas_nature, d2.canvas_location)
graph2 = q2.plot.bar(title = 'Distribution across Canvas types(collected)', xlabel = 'canvas types', ylabel= 'count')
graph2.legend(title='Canvas location')
Out[74]:
<matplotlib.legend.Legend at 0x7fb11d226560>
No description has been provided for this image

Analyzing class dataΒΆ

InΒ [75]:
d2b = clsscanv[['canvas_nature', 'canvas_location']]

q2b = pd.crosstab(d2b.canvas_nature, d2b.canvas_location)
graph2b = q2b.plot.bar(title = 'Distribution across property types for Graffiti Locations(class data)', xlabel = 'property types', ylabel= 'Count')
graph2b.legend(title='Canvas location')
Out[75]:
<matplotlib.legend.Legend at 0x7fb11d8d25c0>
No description has been provided for this image

How strong is the evidence of graffiti removal?ΒΆ

Within our data, there was not much graffiti removal. Most graffiti was not buffed out. It seemed to be older or artists have tagged those spots for a while. I think that our location had less removal because it was mainly on trains. I think it is harder and more time-consuming to clean each train car when the train cars are usually traveling or being used for transport. Additionally, I thought that since some of our areas are private property or government type they decided to not take down graffiti in those areas because even though it has high visibility, it is not as visible as the freeway. So, maybe the city decided where they want to spend money to remove graffiti since our location was not specifically downtown where more tourists are more inclined to be.

Analyzing the data:ΒΆ

InΒ [76]:
evid2 = canvas['graffiti_removal'].value_counts().reset_index()
evid2
Out[76]:
graffiti_removal count
0 N 622
1 Y 116
2 unclear 33

Are graffiti locations very visible to the public?ΒΆ

I think all the locations have high visibility, depending on how you view them. For example, many people commute by light rail and train to work and school. So, those commuting see the graffiti my group had collected. The train cars transport thousands of people every day. But compared to the class, there is probably graffiti on the freeways that more than a thousand people see during rush hour traffic. Compared to people who are walking around campus, still, hundreds of students still pass by graffiti. I think it depends on the canvas type and location to determine how visible an artist's work is.

Analyzing our data:ΒΆ

InΒ [77]:
filtered_canvas.columns
Out[77]:
Index(['id', 'created_at', 'uploaded_at', 'created_by', 'title', 'at_canvas',
       'coords', 'date_entry_canvas', 'property_type', 'property_use',
       'surveillance_status', 'surveillance', 'canvas_location',
       'canvas_nature', 'surface_material', 'graffiti_removal',
       'viewing_potential', 'accessibility', 'notes'],
      dtype='object')
InΒ [78]:
mdf2 = filtered_canvas.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
                            suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'viewing_potential']]
mdf2

mdf2.melt

pivoted_df = mdf2.pivot_table(
    index='created_by_cv', 
    columns='viewing_potential', 
    values='property_type', 
    aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
Out[78]:
created_by_cv count first
viewing_potential high low medium high low medium
0 mailekai@uw.edu 29 9 33 government government industrial
1 vutquynh@uw.edu 63 4 6 industrial government government
InΒ [79]:
q4 = filtered_canvas.viewing_potential.value_counts().plot.bar('viewing_potential', 'count', title = 'Visibility of Graffiti (collected)', xlabel = 'Viewing Potential', ylabel = 'Count')
No description has been provided for this image
InΒ [80]:
mdf2 = clsscanv.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
                            suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'property_type', 'viewing_potential']]
mdf2

mdf2.melt

pivoted_df = mdf2.pivot_table(
    index='created_by_cv', 
    columns='viewing_potential', 
    values='property_type', 
    aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
Out[80]:
created_by_cv count first
viewing_potential high low medium high low medium
0 aleciaco@uw.edu None None 1.0 None None public
1 carstonp@uw.edu 60.0 10.0 10.0 government government public
2 clarak3@uw.edu None 45.0 52.0 None public public
3 corrales@uw.edu 89.0 1.0 19.0 public comercial government
4 dhaman@uw.edu 73.0 None 4.0 comercial None comercial
5 dkhn@uw.edu 33.0 42.0 18.0 government public government
6 dmoral2@uw.edu 32.0 19.0 29.0 industrial industrial industrial
7 eashelon@uw.edu 27.0 23.0 30.0 industrial industrial industrial
8 emali@uw.edu None 12.0 73.0 None terrain_vague government
9 emirob@uw.edu 3.0 46.0 55.0 public public public
10 gabosull@uw.edu 42.0 None 35.0 public None public
11 gjorcz@uw.edu 51.0 21.0 12.0 public public industrial
12 haskins7@uw.edu 46.0 5.0 25.0 residential industrial residential
13 iwrm@uw.edu 3.0 16.0 51.0 public public public
14 jagudino@uw.edu 9.0 None 4.0 residential None residential
15 jazhang0@uw.edu 71.0 12.0 10.0 government government other
16 jtp13@uw.edu 4.0 3.0 6.0 public government public
17 kgiuli@uw.edu None 43.0 42.0 None public public
18 lexingra@uw.edu 38.0 18.0 16.0 public industrial industrial
19 lms2005@uw.edu 11.0 9.0 76.0 government government government
20 lspenc02@uw.edu 66.0 4.0 41.0 public public public
21 makaiol@uw.edu 36.0 4.0 40.0 public residential comercial
22 maxclark@uw.edu 28.0 10.0 42.0 public government public
23 modulitz@uw.edu 2.0 2.0 76.0 public government public
24 munaa3@uw.edu 20.0 None None government None None
25 nbende3@uw.edu 68.0 None 12.0 government None other
26 niabrice@uw.edu None None 83.0 None None public
27 nicraw@uw.edu 60.0 None 10.0 public None government
28 owprenti@uw.edu 40.0 32.0 18.0 comercial comercial government
29 priyad4@uw.edu 51.0 4.0 38.0 public residential public
30 rgould4@uw.edu 48.0 None 42.0 public None public
31 sonil@uw.edu 79.0 None 15.0 public None public
32 stasiaa@uw.edu 130.0 5.0 43.0 comercial comercial comercial
InΒ [81]:
class4 = clsscanv.viewing_potential.value_counts().plot.bar('viewing_potential', 'count', title = 'Visibility of Graffiti (class)', xlabel = 'Viewing Potential', ylabel = 'Count')
No description has been provided for this image

Table Importance:ΒΆ

I thought the representation of this table was also significantly important because it shows how some areas are less visible based on the property type. With the class data, I saw how government property had a high visibility, whereas for my collected data the industrial areas had higher viewing potential because passengers on trains could see the artwork that was on the backside of industrial buildings.

What is Graffiti's Accesibility?ΒΆ

Based on the collected and class data, a lot of the graffiti that was recorded seemed to be very accessible. A large porportion of the graffiti was at a street level meaning it was accessible to get to. I think that high visibility graffiti like 'Heaven spots' are not accessible to get to because of how dangerous it is. But they are high in visibility because of how many people pass by and see the artwork.

InΒ [82]:
access = filtered_canvas.loc [:, 'accessibility'].apply(literal_eval)
access = access.explode()
class1 = access.value_counts().plot.bar(
    title='Accessibility of Graffiti (Collected)',
    xlabel='Accessibility',
    ylabel='Count'
)
No description has been provided for this image

Analyzing our data:ΒΆ

Looking at the bar chart of my own data that has been collected we can observe that a majority of the artwork was at a streetlevel. Additionally, the pattern of getting to some of the street level graffiti was that we had to pass through a gate to see it.

InΒ [83]:
mdf3 = filtered_canvas.merge(graffiti, left_on = 'id', right_on = 'canvas_id', how = 'inner',
                            suffixes = ('_cv', '_gf')).loc[:,['created_by_cv', 'canvas_location', 'accessibility']]
mdf3

mdf3.melt
pivoted_df = mdf3.pivot_table(
    index='created_by_cv', 
    columns='canvas_location', 
    values='accessibility', 
    aggfunc=['count','first']
).reset_index()
pivoted_df = pivoted_df.fillna('None')
pivoted_df
Out[83]:
created_by_cv count first
canvas_location alley bridge highway overpass railroad_tracks street alley bridge highway overpass railroad_tracks street
0 mailekai@uw.edu 3.0 4.0 1.0 1.0 45.0 17.0 ['street_Level'] ['street_Level'] ['street_Level', 'short_barrier'] ['street_Level', 'tall_barrier'] ['street_Level'] ['street_Level']
1 vutquynh@uw.edu None 4.0 1.0 None 59.0 9.0 None ['street_Level', 'thru_gate'] ['short_barrier', 'street_Level'] None ['street_Level', 'thru_gate'] ['street_Level']

Table Importance:ΒΆ

I think this table is one of the more important ones for my block group because a few of the areas were easy to access but there were a lot of trespassing signs. Additionally, some of them crossed train tracks to get to which I do not advise everyone doing take at their own risk. But some of the most beautiful artwork seemed to require a bit of climbing or going through a gate. From the class data, I found that our data was also similar with a majority of the graffiti collected being at a street level. I think artists tend to do street-level pieces because of the convenience. Whereas a known local Seattle artist like "Dotcom", I've seen a few of his heaven spot pieces on I-5 northbound. Additionally, with the count added you can see the difference between my data and the classes data about the type of area a majority of our graffiti was located.

What is the accessibility of the graffiti being collected?ΒΆ

InΒ [84]:
access2 = clsscanv.loc[:, 'accessibility'].apply(literal_eval)
InΒ [85]:
access2 = access2.explode()
InΒ [86]:
classA = access2.value_counts().plot.bar(
    title='Accessibility of Graffiti (Class)',
    xlabel='Accessibility',
    ylabel='Count'
)
No description has been provided for this image

Analyzing our data:ΒΆ

From the class data we can infer that there is multiple ways that graffiti is being accessed. We can see that some is easier to access by street, while harder accessible piecing tend to have a more complicated path to get to. Additionally, we can see that most heavenly spots require going through a gate to get to.

Is graffiti oportunistic or not?ΒΆ

A majority of the class said that there graffiti locations did not have surveillance and I feel that my group did because since we were on government and indsutrial areas there are more security. Also with our areas we tended to go to a few spots that said no trespassing, so by not following the signs we knew that those areas were being watched throughout the day and night.

Analyzing our data:ΒΆ

To ensure that our data is clean we decided to make sure the # of surveillances of each canvas would return 0 if there is no surveillance.

InΒ [87]:
def counter(row, col):
    '''given a column, col, it will take the row the row entry and make sure to turn it into an array to count the numbers of elements inside, It would reutn 0 if there is nothing(string/arr)'''
    if "," not in row[col]:
        return 0
    arr = row[col].split(",")
    return len(arr)
    
filtered_canvas['surveillance_count'] = filtered_canvas.apply(counter, col='surveillance', axis='columns')

q5 = filtered_canvas.surveillance_count.value_counts().reset_index()
q5 = q5.sort_values(by='surveillance_count').reset_index()
q5.plot.bar('surveillance_count', 'count', title = 'Surveillance Counts in Canvases(collected)', xlabel=' Surveillance Count', ylabel= 'Count')
Out[87]:
<Axes: title={'center': 'Surveillance Counts in Canvases(collected)'}, xlabel=' Surveillance Count', ylabel='Count'>
No description has been provided for this image

Analyzing class data:ΒΆ

InΒ [88]:
clsscanv.loc[:, 'surveillance_count'] = clsscanv.apply(counter, col='surveillance', axis='columns')

q5b = clsscanv.surveillance_count.value_counts().reset_index()
q5b = q5b.sort_values(by='surveillance_count').reset_index()
q5b.plot.bar('surveillance_count', 'count', title = 'Surveillance Counts in Canvases(class)', xlabel=' Surveillance Count', ylabel= 'Count')
/tmp/ipykernel_2336/353488732.py:1: SettingWithCopyWarning: 
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
  clsscanv.loc[:, 'surveillance_count'] = clsscanv.apply(counter, col='surveillance', axis='columns')
Out[88]:
<Axes: title={'center': 'Surveillance Counts in Canvases(class)'}, xlabel=' Surveillance Count', ylabel='Count'>
No description has been provided for this image

What is the distribution of graffiti types across your block group?ΒΆ

My group found a lot of tags that kind of seemed to be like something quick to put out there. But when we more specifically got into the trains cars and tracks I noticed way more throw-ups and the different amounts of creativity and styles that were produced. I also started to see who was from Seattle and who wasn't on the train cars because of the different tags and throwup styles.

InΒ [89]:
q6 = filtered_graffiti.type.value_counts().plot.bar('type', 'count', title = "Distribution of Graffiti Types (collected)", xlabel = 'type of graffiti', ylabel='Count')
No description has been provided for this image

The class data:ΒΆ

InΒ [90]:
q6b = clssgraf.type.value_counts().plot.bar('type', 'count', title = "Distribution of Graffiti Types (class)", xlabel = 'type of graffiti', ylabel='Count')
No description has been provided for this image

With regards to the nature of the message how do these distribute percentagewise?ΒΆ

I think throw-ups are more common in graffiti culture and that is what makes graffiti so unique and different from other types of artwork. I also thought that tags are also the quickest to produce without getting arrested for vandalism. Same thing for throw-ups if they are planned it looks easier to do a throw-up rather than a piece.

InΒ [91]:
d7 = filtered_graffiti[['type', 'message']]

q7 = pd.crosstab(d7.type, d7.message, normalize=True)
g7 = q7.plot.bar(title = 'Nature of the message percent distribution', xlabel= 'Type of Graffiti', ylabel= 'Percent')
g7.legend(title = 'Nature of message')
Out[91]:
<matplotlib.legend.Legend at 0x7fb11c8e8310>
No description has been provided for this image

The class data:ΒΆ

InΒ [92]:
d7b = clssgraf[['type', 'message']]

q7b = pd.crosstab(d7b.type, d7b.message, normalize=True)
g7b = q7b.plot.bar(title = 'Nature of the message percent distribution', xlabel= 'Type of Graffiti', ylabel= 'Percent')
g7b.legend(title = 'Nature of message')
Out[92]:
<matplotlib.legend.Legend at 0x7fb11c8e8430>
No description has been provided for this image

What are the most common techniques used?ΒΆ

For my groups data most technique was with a spray as for the class had been a marker. I think this is because a majority of the canvas type was on a sign, so using a marker is easier to tag on a sign rather than a spray and having it drip everywhere.

InΒ [93]:
q8 = filtered_graffiti.technique.value_counts().plot.bar(title = 'Count of Graffiti Techniques (collected)', xlabel = 'Techniques', ylabel = 'Count')
No description has been provided for this image

The class data:ΒΆ

InΒ [94]:
q8b = clssgraf.technique.value_counts().plot.bar(title = 'Count of Graffiti Techniques (class)', xlabel = 'Techniques', ylabel = 'Count')
No description has been provided for this image

Is black the most prevalent color in your block group? What about other colors?ΒΆ

My group had more white than black. While the classes majority was black. I think black and white are pretty close because they are easy colors to obtain. Analyzing our data:

InΒ [95]:
d9 = filtered_graffiti.loc [:, 'colors'].apply(literal_eval)
d9 = d9.explode()

g9 = d9.value_counts().plot.bar(title= 'Count of Graffiti colors (collected)', ylabel = 'Count', xlabel = 'Colors')
No description has been provided for this image
InΒ [96]:
d9b = clssgraf.loc [:, 'colors'].apply(literal_eval)
d9b = d9b.explode()

g9b = d9b.value_counts().plot.bar(title= 'Count of Graffiti colors (class)', ylabel = 'Count', xlabel = 'Colors')
No description has been provided for this image

How do the results obtained for questions: compare against those obtained from the rest of your classmates? What does this tell you?ΒΆ

For all of the questions, I think the results and outcomes we got compared to other data that was collected had been significantly different. I also think base off of the location was a big reason why everyone had different types of techniques, colors, types of graffiti, and properties. Our location was near the stadium and south of the Starbucks and the city of Seattle lighting. Since our area was predominantly industrial, government and commercial most of our data had come from the train tracks and the trains or giant storage containers. But since we had found a majority of our work from train tracks and on the train cars a lot of work was not from Seattle and we noticed some had area codes or mentioned California because those trains travel all the way down the west coast.

Type x Numbers of ColorsΒΆ

I decided to break down the type of graffiti with the number of colors because I feel like often certain types of pieces tend to have more or less color. Within throw-ups, I noticed that they usually always have two colors because throw-ups give off the 3-D look effect. Whereas a tag is usually always one color because it is something quick and fast. When it comes to pieces I noticed that they usually have a lot of colors and take more time into the type of artwork that they are displaying.

InΒ [97]:
graffiti_summary = pd.crosstab(
    clssgraf['type'], 
    clssgraf['num_colors'], 
    margins=True,            
    margins_name="Total"    
)
graffiti_summary
Out[97]:
num_colors 1 2 3-5 6+ Total
type
blockbuster 4 7 9 0 20
edging 1 1 0 0 2
hollow 118 7 1 0 126
other 41 23 5 0 69
pasteUp 4 4 2 0 10
piece 3 22 84 31 140
stencil 3 1 0 0 4
tag 2849 69 18 4 2940
throwUp 35 243 91 1 370
wildstyle 0 2 20 2 24
Total 3058 379 230 38 3705

How do you find these tables important?ΒΆ

I think these three tables were the most important because I found them the easiest to compare my data to the class data. Throughout the three of these graphs, we can see a lot of the differences in a much more visual way compared to the tables above with numbers. I think they are the most relevant to my block group because I feel that a part of graffiti culture sort of started on train tracks or subways. A majority of my block group had been on the train track areas so it is interesting to compare to others who may not have had areas of train tracks.

Different comparisons using class dataΒΆ

Canvas Locations x Types (Class data)ΒΆ

InΒ [98]:
canvas_types_summary = pd.crosstab(
    clsscanv['canvas_location'], 
    clssgraf['type'],  
    margins=False
)
canvas_types_summary.plot(kind='bar', stacked=False, figsize=(10, 6), title="Canvas Locations x Graffiti Types")
plt.xlabel('Canvas Location')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
No description has been provided for this image

Property Type x Types (Class data)ΒΆ

InΒ [128]:
property_types_summary = pd.crosstab(
    clsscanv['property_type'], 
    clssgraf['type'], 
    margins=False
)
property_types_summary.plot(kind='bar', stacked=False, figsize=(10, 6), title="Property Types x Graffiti Types")
plt.xlabel('Property Type')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
No description has been provided for this image

Viewing Potential x Types (Class Data)ΒΆ

InΒ [100]:
viewing_types_summary = pd.crosstab(
    clsscanv['viewing_potential'], 
    clssgraf['type'], 
    margins=False
)
viewing_types_summary.plot(kind='bar', stacked=False, figsize=(10, 6), title="Viewing Potential x Graffiti Types")
plt.xlabel('Viewing Potential')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
No description has been provided for this image

Stacked bar charts (Class data)ΒΆ

InΒ [101]:
canvas_types_summary = pd.crosstab(
    clsscanv['canvas_location'], 
    clssgraf['type'], 
    margins=False
)
canvas_types_summary.plot(kind='bar', stacked=True, figsize=(10, 6), title="Canvas Locations x Graffiti Types (Exploded)")
plt.xlabel('Canvas Location')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper left')
plt.show()
No description has been provided for this image
InΒ [102]:
viewing_types_summary = pd.crosstab(
    clsscanv['viewing_potential'], 
    clssgraf['type'], 
    margins=False
)
viewing_types_summary.plot(kind='bar', stacked=True, figsize=(10, 6), title="Viewing Potential x Graffiti Types")
plt.xlabel('Viewing Potential')
plt.ylabel('Count of Graffiti Types')
plt.legend(title='Graffiti Type', loc='upper center')
plt.show()
No description has been provided for this image

Let's use seaborn with our dataΒΆ

InΒ [129]:
sns.set_style('whitegrid')

All data of property types & viewing potentialΒΆ

What are you representing?ΒΆ

I decided to use all of the class data to show a representation of the counts of which types of property were identified as high, medium and low visibility. I thought this was important because we could see and sort of decipher what properties are most popular when it comes to graffiti work. I thought this graph did a good representation of splitting up each property type individually to help me and others have a clear understanding of where graffiti artists are putting up there work in Seattle.

What I have learned from this chart is that not a lot of artist are putting work in residential areas. I know that residential areas are more disrespectful place to do throwups or tagging but it made me curious if neighborhood parks or walls along resdiential areas are also not getting tagged as well. I never realized how low viewing potential in residential areas were, until I made this chart.

InΒ [105]:
sns.displot(data=canvas, x='viewing_potential', hue='canvas_location', multiple='stack',
           col = 'viewing_potential',
           row='property_type');
No description has been provided for this image

Distribution of my block groups graffitiΒΆ

What did the SODO area provide differently than other areas in Seattle?ΒΆ

From the two maps created below, I observed that primarily railside or train track areas were more popular for graffiti. A majority of the graffiti from SODO had street-level canvas locations, so it makes sense for a majority of the artwork to be on a train track or industrial area. Another observation I have noticed based on the map was that there are a few overpasses and bridges in those areas that had artwork. Since SODO is an industrial area, it is pretty common to see graffiti artwork around here because of the big plain walls and the trains. To answer this question, I decided to use the final week of data to analyze what everyone else in my class was doing. It was interesting to see if my peers had seen as much graffiti as I had or if the type of graffiti they saw was different. I felt that my data was a bit different because the trains travel to different states. So, I potentially was seeing artwork from outside of the Seattle area. As for my classmates, I could have only been seeing local artists. I think my data and code help visualize a difference in areas. My group was mainly industrial on the trackside. As for my classmates, they may have had only residential while I had zero. Walking in these industrial areas was not common, but since a lot of public transportation routes used these paths, I think that's how our area was highly viewed.

What made the counts in my block group different from other groups? How were these observations different from others?ΒΆ

Some groups may have collected more graffiti than my group, but an observation I made was that areas such as Seattle Center, South Judkins St, and Symphony Station area were also popular areas with high counts of graffiti. I am more surprised to see that Seattle Center even has a lot of graffiti because I figured since it is more of a tourist spot, the city would take it down. As for if it was from an artist's perspective, I could see it as the perfect opportunity to let travelers see the artists of Seattle. From a few of the videos in class, I think that artists could think that putting up their work in higher tourist areas can gain them recognition to be published in articles or videos. Similar to the ones we watched in class and read about, the same artwork I learned in class is also someone else's work being recognized. Additionally, I believe that my data counts could have been higher because a typical stereotype for graffiti is on a subway or wall. In certain areas of the city, you do not see the trains or have big industrial walls, so the graffiti ought to be different. From the tables and charts above, we can see the different impacts of property use. Since housing is used every day, I doubt someone would tag your house. As for the backsides of industrial areas, vendors/businesses may not notice graffiti work until a week later. Although the property is in use, it is less private, like a house. I think our counts show how different types of property in use can affect the amount of graffiti in the area.

What did we learn?ΒΆ

Throughout this investigation, it made me understand how it was more common to see a throw-up in my area, whereas other areas had different types of graffiti based on property and location. I think that in more residential areas, the graffiti was bound to be smaller, so you'd more likely see a tag. Whereas in downtown, you might see throwup tags or more hollows because those areas have higher populations of people. I think throw-ups take a longer time to display, so when doing them, you need to be quick and efficient without getting caught. Industrial areas are perfect for that because not many buildings or places have guards there to stop. Whereas in downtown, the security is higher or residential, the property is not as public and more private.

InΒ [130]:
keep_canvas = ['id', 'coords']
keep_graffiti = ['canvas_id', 'type']
InΒ [131]:
df = (canvas.loc[:,keep_canvas]
            .assign(lat= canvas.coords.apply(extract, key='latitude'))  #apply function and create a column with latitude
            .assign(long=canvas.coords.apply(extract, key='longitude')) #apply function and create a column with latitude
            .dropna(subset=['lat', 'long']) # remove anyrow entries with no lat or long
            .merge(graffiti.loc[:,keep_graffiti], left_on='id', right_on='canvas_id', how='inner')
)
InΒ [132]:
# my block group 
center_lat, center_lon = 47.578701, -122.335922
InΒ [133]:
fmap = folium.Map(
    location=[center_lat, center_lon],  
    zoom_start=14,                      
    width='40%',
    control_scale=True                  
)
InΒ [134]:
marker_cluster = MarkerCluster(name='graffiti').add_to(fmap)
InΒ [135]:
for indx, row in df.iterrows():
    # create marker
    folium.Marker(location = [row.lat, row.long],               # location of each graffiti
                  popup = row.type,               # identify the popup with each type
                  icon = folium.Icon(color='red', icon='pencil')               # create an icon
                  ).add_to(marker_cluster)
InΒ [136]:
fmap
Out[136]:
Make this Notebook Trusted to load map: File -> Trust Notebook
InΒ [137]:
locs = df.loc [:, ['lat', 'long']].values.tolist()
locs
Out[137]:
[[47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661376, -122.332019],
 [47.661265, -122.331316],
 [47.630416, -122.320324],
 [47.630416, -122.320324],
 [47.630416, -122.320324],
 [47.630416, -122.320324],
 [47.630416, -122.320324],
 [47.630416, -122.320324],
 [47.630162, -122.320196],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629446, -122.320254],
 [47.629116, -122.320231],
 [47.629116, -122.320231],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.628739, -122.320073],
 [47.591846, -122.304082],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.581934, -122.301046],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.618581, -122.319632],
 [47.606656, -122.330188],
 [47.606656, -122.330188],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.577919, -122.322999],
 [47.578041, -122.323006],
 [47.578041, -122.323006],
 [47.578041, -122.323006],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.581008, -122.300483],
 [47.661503, -122.331484],
 [47.661503, -122.331484],
 [47.661503, -122.331484],
 [47.661503, -122.331484],
 [47.661503, -122.331484],
 [47.661503, -122.331484],
 [47.661503, -122.331484],
 [47.661681, -122.331875],
 [47.661681, -122.331875],
 [47.661555, -122.331798],
 [47.661555, -122.331798],
 [47.661555, -122.331798],
 [47.661555, -122.331798],
 [47.661555, -122.331798],
 [47.661555, -122.331798],
 [47.661555, -122.331798],
 [47.661549, -122.331461],
 [47.661549, -122.331461],
 [47.661549, -122.331461],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662767, -122.31254],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.662769, -122.312534],
 [47.598551, -122.325799],
 [47.598551, -122.325799],
 [47.598551, -122.325799],
 [47.598623, -122.325654],
 [47.598429, -122.325754],
 [47.598429, -122.325754],
 [47.598429, -122.325754],
 [47.598429, -122.325754],
 [47.598429, -122.325754],
 [47.598429, -122.325754],
 [47.598524, -122.325702],
 [47.598524, -122.325702],
 [47.598524, -122.325702],
 [47.598524, -122.325702],
 [47.598718, -122.325641],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.598535, -122.325849],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.591691, -122.31993],
 [47.598615, -122.325878],
 [47.598615, -122.325878],
 [47.598615, -122.325878],
 [47.598615, -122.325878],
 [47.598611, -122.325769],
 [47.598611, -122.325769],
 [47.598611, -122.325769],
 [47.598611, -122.325769],
 [47.621948, -122.345141],
 [47.593387, -122.318932],
 [47.593387, -122.318932],
 [47.593387, -122.318932],
 [47.593387, -122.318932],
 [47.598472, -122.326108],
 [47.598472, -122.326108],
 [47.598472, -122.326108],
 [47.598421, -122.325937],
 [47.593585, -122.318655],
 [47.621982, -122.345121],
 [47.621982, -122.345121],
 [47.621885, -122.344358],
 [47.621885, -122.344358],
 [47.621885, -122.344358],
 [47.621972, -122.344319],
 [47.621972, -122.344319],
 [47.621721, -122.344951],
 [47.621754, -122.344834],
 [47.621754, -122.344834],
 [47.591251, -122.302774],
 [47.591251, -122.302774],
 [47.591251, -122.302774],
 [47.591251, -122.302774],
 [47.591251, -122.302774],
 [47.591251, -122.302774],
 [47.591251, -122.302774],
 [47.620742, -122.345217],
 [47.620742, -122.345217],
 [47.591218, -122.303012],
 [47.591218, -122.303012],
 [47.591218, -122.303012],
 [47.620943, -122.34514],
 [47.620943, -122.34514],
 [47.620943, -122.34514],
 [47.620818, -122.345353],
 [47.620818, -122.345353],
 [47.620818, -122.345353],
 [47.680467, -122.321855],
 [47.680467, -122.321855],
 [47.680467, -122.321855],
 [47.680467, -122.321855],
 [47.680467, -122.321855],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680275, -122.321651],
 [47.680208, -122.321838],
 [47.679536, -122.321911],
 [47.661764, -122.33173],
 [47.661764, -122.33173],
 [47.661764, -122.33173],
 [47.661764, -122.33173],
 [47.661764, -122.33173],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.645878, -122.333741],
 [47.646092, -122.333753],
 [47.646092, -122.333753],
 [47.646092, -122.333753],
 [47.646101, -122.333671],
 [47.646101, -122.333671],
 [47.651157, -122.330547],
 [47.651157, -122.330547],
 [47.651157, -122.330547],
 [47.65109, -122.33055],
 [47.65109, -122.33055],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.65113, -122.330551],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651698, -122.329821],
 [47.651778, -122.329597],
 [47.651778, -122.329597],
 [47.651778, -122.329597],
 [47.651778, -122.329597],
 [47.651778, -122.329597],
 [47.651778, -122.329597],
 [47.652504, -122.328831],
 [47.652504, -122.328831],
 [47.668493, -122.315331],
 [47.668493, -122.315331],
 [47.668493, -122.315331],
 [47.668623, -122.314657],
 [47.668623, -122.314657],
 [47.668653, -122.313637],
 [47.668653, -122.313637],
 [47.668535, -122.313372],
 [47.668535, -122.313372],
 [47.668535, -122.313372],
 [47.581, -122.334083],
 [47.581, -122.334083],
 [47.581, -122.334083],
 [47.581, -122.334083],
 [47.668335, -122.313943],
 [47.668335, -122.313943],
 [47.668335, -122.313943],
 [47.668343, -122.314261],
 [47.668343, -122.314261],
 [47.668343, -122.314261],
 [47.66835, -122.314256],
 [47.66835, -122.314256],
 [47.589139, -122.333333],
 [47.589139, -122.333333],
 [47.589139, -122.333333],
 [47.668397, -122.313551],
 [47.668397, -122.313551],
 [47.668397, -122.313551],
 [47.668397, -122.313551],
 [47.668397, -122.313551],
 [47.668397, -122.313551],
 [47.668475, -122.313609],
 [47.668475, -122.313609],
 [47.668475, -122.313609],
 [47.668462, -122.313265],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.606718, -122.330257],
 [47.60673, -122.330256],
 [47.60673, -122.330256],
 [47.60673, -122.330256],
 [47.60673, -122.330256],
 [47.60673, -122.330256],
 [47.60673, -122.330256],
 [47.60673, -122.330256],
 [47.609957, -122.330586],
 [47.609957, -122.330586],
 [47.609957, -122.330586],
 [47.609957, -122.330586],
 [47.609957, -122.330586],
 [47.61028, -122.330569],
 [47.61028, -122.330569],
 [47.61028, -122.330569],
 [47.61028, -122.330569],
 [47.608942, -122.331132],
 [47.608942, -122.331132],
 [47.608942, -122.331132],
 [47.581557, -122.30051],
 [47.581557, -122.30051],
 [47.581557, -122.30051],
 [47.581557, -122.30051],
 [47.581843, -122.301016],
 [47.581843, -122.301016],
 [47.581843, -122.301016],
 [47.581843, -122.301016],
 [47.581843, -122.301016],
 [47.581843, -122.301016],
 [47.62896, -122.340546],
 [47.629043, -122.340636],
 [47.629043, -122.340636],
 [47.629043, -122.340636],
 [47.629043, -122.340636],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661297, -122.313814],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.661263, -122.313562],
 [47.624287, -122.345073],
 [47.624287, -122.345073],
 [47.624287, -122.345073],
 [47.624322, -122.345073],
 [47.624322, -122.345073],
 [47.624322, -122.345073],
 [47.624322, -122.345073],
 [47.624322, -122.345073],
 [47.624326, -122.345073],
 [47.624307, -122.345076],
 [47.624307, -122.345076],
 [47.624307, -122.345076],
 [47.624284, -122.345027],
 [47.624284, -122.345027],
 [47.624284, -122.345027],
 [47.624284, -122.345027],
 [47.624284, -122.345027],
 [47.624268, -122.344967],
 [47.624268, -122.344967],
 [47.624268, -122.344967],
 [47.624301, -122.344973],
 [47.624301, -122.344973],
 [47.624301, -122.344973],
 [47.624301, -122.344973],
 [47.622167, -122.345778],
 [47.622147, -122.345861],
 [47.599095, -122.325774],
 [47.599095, -122.325774],
 [47.599095, -122.325774],
 [47.599176, -122.325875],
 [47.599176, -122.325875],
 [47.599424, -122.326682],
 [47.591424, -122.302925],
 [47.591424, -122.302925],
 [47.591424, -122.302925],
 [47.591424, -122.302925],
 [47.599172, -122.326206],
 [47.59927, -122.326489],
 [47.599169, -122.326695],
 [47.591475, -122.302992],
 [47.591475, -122.302992],
 [47.591475, -122.302992],
 [47.591475, -122.302992],
 [47.591475, -122.302992],
 [47.591475, -122.302992],
 [47.599187, -122.327359],
 [47.599187, -122.327359],
 [47.599187, -122.327359],
 [47.599089, -122.327032],
 [47.599089, -122.327032],
 [47.599147, -122.327254],
 [47.599147, -122.327254],
 [47.599147, -122.327254],
 [47.599233, -122.327317],
 [47.599233, -122.327317],
 [47.599233, -122.327317],
 [47.599233, -122.327317],
 [47.646443, -122.334297],
 [47.646443, -122.334297],
 [47.646443, -122.334297],
 [47.646519, -122.334341],
 [47.646519, -122.334341],
 [47.646519, -122.334341],
 [47.67875, -122.324467],
 [47.67875, -122.324467],
 [47.67875, -122.324467],
 [47.678372, -122.324282],
 [47.677952, -122.323813],
 [47.678029, -122.323279],
 [47.678029, -122.323279],
 [47.677102, -122.32293],
 [47.676331, -122.322089],
 [47.676433, -122.32189],
 [47.676433, -122.32189],
 [47.676433, -122.32189],
 [47.676433, -122.32189],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.631306, -122.320137],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.630313, -122.317151],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.629242, -122.318222],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.628612, -122.316918],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630636, -122.341237],
 [47.630781, -122.341145],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651936, -122.32952],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.651988, -122.329427],
 [47.652528, -122.328806],
 [47.652528, -122.328806],
 [47.652528, -122.328806],
 [47.652528, -122.328806],
 [47.652528, -122.328806],
 [47.652528, -122.328806],
 [47.652528, -122.328806],
 [47.653037, -122.328363],
 [47.653037, -122.328363],
 [47.653037, -122.328363],
 [47.653037, -122.328363],
 [47.653037, -122.328363],
 [47.653037, -122.328363],
 [47.653037, -122.328363],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.653332, -122.328186],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.606366, -122.330587],
 [47.661086, -122.330882],
 [47.576283, -122.325671],
 [47.576283, -122.325671],
 [47.576283, -122.325671],
 [47.576283, -122.325671],
 [47.577075, -122.325571],
 [47.577075, -122.325571],
 [47.577075, -122.325571],
 [47.577075, -122.325571],
 [47.577075, -122.325571],
 [47.577075, -122.325571],
 [47.577046, -122.325068],
 [47.577298, -122.325357],
 [47.577298, -122.325357],
 [47.577298, -122.325357],
 [47.577298, -122.325357],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.577878, -122.326836],
 [47.578123, -122.32662],
 [47.578123, -122.32662],
 [47.577862, -122.326892],
 [47.577862, -122.326892],
 [47.577862, -122.326892],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.577859, -122.327059],
 [47.661224, -122.331869],
 [47.661273, -122.331926],
 [47.661293, -122.335688],
 [47.662598, -122.329007],
 [47.662598, -122.329007],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.657773, -122.315147],
 [47.657773, -122.315147],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.579169, -122.332136],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.57875, -122.332278],
 [47.599983, -122.324343],
 [47.60006, -122.323489],
 [47.60006, -122.323489],
 [47.599977, -122.324397],
 [47.599977, -122.324397],
 [47.581627, -122.30072],
 [47.581627, -122.30072],
 [47.581627, -122.30072],
 [47.581627, -122.30072],
 [47.581627, -122.30072],
 [47.581627, -122.30072],
 [47.581254, -122.300692],
 [47.581254, -122.300692],
 [47.581254, -122.300692],
 [47.581254, -122.300692],
 [47.599989, -122.328101],
 [47.599989, -122.328101],
 [47.600264, -122.328332],
 [47.600264, -122.328332],
 [47.600113, -122.328288],
 [47.600113, -122.328288],
 [47.600113, -122.328288],
 [47.600113, -122.328288],
 [47.600113, -122.328288],
 [47.600113, -122.328288],
 [47.600113, -122.328288],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.610906, -122.330837],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.663671, -122.312614],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.66353, -122.312472],
 [47.590848, -122.302607],
 [47.590858, -122.302563],
 [47.590858, -122.302563],
 [47.590858, -122.302563],
 [47.591082, -122.302711],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.64592, -122.333473],
 [47.645914, -122.33327],
 [47.645914, -122.33327],
 [47.645914, -122.33327],
 [47.645875, -122.333241],
 [47.645828, -122.333137],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646024, -122.33346],
 [47.646033, -122.333513],
 [47.646033, -122.333513],
 [47.646066, -122.333468],
 [47.646066, -122.333468],
 [47.64769, -122.335256],
 [47.64769, -122.335256],
 [47.64769, -122.335256],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661433, -122.334295],
 [47.661462, -122.334273],
 [47.661462, -122.334273],
 [47.661462, -122.334273],
 [47.661462, -122.334273],
 [47.661462, -122.334273],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.661433, -122.334241],
 [47.66146, -122.334229],
 [47.66149, -122.332816],
 [47.661539, -122.332493],
 [47.613824, -122.329949],
 [47.613824, -122.329949],
 [47.613824, -122.329949],
 [47.613824, -122.329949],
 [47.613824, -122.329949],
 [47.613824, -122.329949],
 [47.613824, -122.329949],
 [47.609992, -122.331575],
 [47.609992, -122.331575],
 [47.608835, -122.331092],
 [47.608835, -122.331092],
 [47.608835, -122.331092],
 [47.608835, -122.331092],
 [47.608835, -122.331092],
 [47.608835, -122.331092],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.654461, -122.326718],
 [47.669209, -122.31318],
 [47.669209, -122.31318],
 [47.669209, -122.31318],
 [47.669209, -122.31318],
 [47.669, -122.313205],
 [47.669, -122.313205],
 [47.668455, -122.312991],
 [47.668455, -122.312991],
 [47.61675, -122.31999],
 [47.61675, -122.31999],
 [47.61675, -122.31999],
 [47.617202, -122.320085],
 [47.617202, -122.320085],
 [47.617202, -122.320085],
 [47.617202, -122.320085],
 [47.617004, -122.319659],
 [47.617004, -122.319659],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.617112, -122.319697],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.598955, -122.327478],
 [47.599078, -122.327043],
 [47.599078, -122.327043],
 [47.599078, -122.327043],
 [47.598786, -122.325092],
 [47.598786, -122.325092],
 [47.598786, -122.325092],
 [47.598786, -122.325092],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.661455, -122.331642],
 [47.600452, -122.328868],
 [47.600452, -122.328868],
 [47.600452, -122.328868],
 [47.600452, -122.328868],
 [47.600452, -122.328868],
 [47.600452, -122.328868],
 [47.600353, -122.329116],
 [47.600353, -122.329116],
 [47.600795, -122.328649],
 [47.601189, -122.329158],
 [47.589569, -122.307113],
 [47.589569, -122.307113],
 [47.589569, -122.307113],
 [47.589569, -122.307113],
 [47.589569, -122.307113],
 [47.589569, -122.307113],
 [47.58932, -122.305954],
 [47.58932, -122.305954],
 [47.58932, -122.305954],
 [47.58932, -122.305954],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.617533, -122.319968],
 [47.581156, -122.300477],
 [47.581156, -122.300477],
 [47.581156, -122.300477],
 [47.581156, -122.300477],
 [47.581156, -122.300477],
 [47.581156, -122.300477],
 [47.581278, -122.300646],
 [47.581278, -122.300646],
 [47.581278, -122.300646],
 [47.581278, -122.300646],
 [47.664545, -122.313555],
 [47.664545, -122.313555],
 [47.664545, -122.313555],
 [47.664545, -122.313555],
 [47.664545, -122.313555],
 [47.664545, -122.313555],
 ...]
InΒ [138]:
fmap = folium.Map(
    location=[center_lat, center_lon],  
    zoom_start=14,                      
    width='40%',
    control_scale=True                  
)
InΒ [139]:
HeatMap(data=locs,
        radius=10,
        gradient = {1.0: 'red', 0.75:'violet', 0.5:'orange', 0.25:'yellow'},
        overlay=False).add_to(fmap)
Out[139]:
<folium.plugins.heat_map.HeatMap at 0x7fb11357ab30>
InΒ [140]:
fmap
Out[140]:
Make this Notebook Trusted to load map: File -> Trust Notebook

Summary:ΒΆ

What I have learned about graffiti in my block group is how diverse the community is. I noticed a few artwork that had more of the Chicano style. I remember learning in class how that originated from California, and with the Amtrak train consistently passing by, it was no surprise to see those types of artwork. Another thing I learned from my block group was the stories graffiti has behind it. I sometimes saw couples work with tags, and sometimes I saw inspirational messages being put out. Lastly, what I thought was the biggest thing I learned was how location does matter. After doing this project, I could see visually and statistically how areas are different. Additionally, I also saw how location is different because graffiti artists need to see what audience they want to display their work for. Do they want their name to be known, or are they trying to pass a message on to others? I think that different areas tell different stories for different reasons.